﻿CREATE PROCEDURE [dbo].[TempArticles_ConcatenateUomAndCodeForRepeatedCodes]	
AS
declare @Code varchar(200);
declare @UOM varchar(50);

declare @PrevCode varchar(200) = '';
declare @PrevUOM varchar(50) = '';

Declare c Cursor For 
					select Code, UOM 
					from TempArticles
					where
					Code in 
					( 
						select Code
						from TempArticles
						group by Code
						having COUNT(Code) > 1 
					)
					 order by Code, UOM

Open c

Fetch next From c into @Code, @UOM

While @@Fetch_Status=0 
 Begin
	
	if @PrevCode = @Code
	begin
		if @PrevUOM <> @UOM -- Si encuento algun caso con mismo codigo y distinta UOM
		begin
			--Actualizo los articulos con el nuevo codigo (codigo + UOM)
			update TempArticles
			set Code = Code + UOM
			where Code = @Code

			--Genero el audit trail del cambio
			insert into AuditTrails (ErrorType, Source, Date, Comments)
			values ('Cambio de Código', 'Importador', GetDate(), 'A todos los Articulos con código' + @Code + ' se les cambio el código por la concatenación de su código original + su unidad de medida')
			
			--Actualizo las ventas con el nuevo codigo (codigo + UOM)
			update TempArticleSales
			set ArticleCode = ArticleCode + UOM
			where ArticleCode = @Code
		end
	end
	
	set @PrevCode = @Code;	   	
	set @PrevUOM = @UOM;
   
    Fetch next From c into @Code, @UOM
 End

Close c
Deallocate c
RETURN 0